/**
  * description: xxx
  * date: 2020/6/14
  * author: Romain
  * version: 1.0
  */
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object HelloSpark {
  def main(args: Array[String]): Unit = {
    // 创建配置对象
    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("HelloSpark")
    // 创建上下文对象  SparkContext
    val context: SparkContext = new SparkContext(conf)
    // 从文件中读取要统计的语句
    val lines: RDD[String] = context.textFile("G:/test/out.txt")
    // 将从文件读取到的字符串进行切分
    val words: RDD[String] = lines.flatMap(_.split(" "))
    // 将单词转换成为元组
    val tuples: RDD[(String, Int)] = words.map((_, 1))
    // 将元祖进行聚合
    val sumed: RDD[(String, Int)] = tuples.reduceByKey(_ + _)
    // 对聚合后的结果进行排序
    val sorted: RDD[(String, Int)] = sumed.sortBy(_._2, false)
//    val sorted: RDD[(String, Int)] = tuples.sortByKey(false)

    //注sortBy 或sortByKey均会分为一个job
    sumed.foreach(x=>print(x))
    // 将结果输出到文件中
//    sorted.saveAsTextFile("G:/wordcount/01")
//    Thread.sleep(1000*600)
    // 释放资源
//    context.stop()
  }
}




